package com.goods.business.service;

import com.goods.common.model.business.Product;
import com.goods.common.vo.business.ProductStockVO;
import com.goods.common.vo.business.ProductVO;
import com.goods.common.vo.system.PageVO;

import java.util.List;

/**
 * Title:
 * Author: fusu
 * DateTime:  2023/3/24
 * Description:
 **/
public interface ProductService {
    /**
     * @return com.goods.common.vo.system.PageVO
     * @Author: fusu
     * @Description: 物资资料分页列表
     * @DateTime:18:45 2023/3/24
     * @params: [pageNum, pageSize, name, categorys]
     */
    PageVO findProductList(Integer pageNum, Integer pageSize, String name, List<Long> categorys, Integer status);

    /**
     * @return void
     * @Author: fusu
     * @Description: 物资资料添加
     * @DateTime:19:55 2023/3/24
     * @params: [productVO]
     */
    void addProduct(ProductVO productVO);

    /**
     * @return com.goods.common.model.business.Product
     * @Author: fusu
     * @Description: 物资资料根据id获取
     * @DateTime:20:21 2023/3/24
     * @params: [productId]
     */
    Product getByProductId(Long productId);

    /**
     * @return void
     * @Author: fusu
     * @Description: 物资资料根据id修改
     * @DateTime:20:25 2023/3/24
     * @params: [product]
     */
    void updateByProductId(Product product);

    /**
     * @return void
     * @Author: fusu
     * @Description: 物资资料根据id放入回收站
     * @DateTime:20:28 2023/3/24
     * @params: [productId]
     */
    void removeByProductId(Long productId);

    /**
     * @return void
     * @Author: fusu
     * @Description: 物资资料根据id删除
     * @DateTime:20:47 2023/3/24
     * @params: [productId]
     */
    void deleteByProductId(Long productId);

    /**
     * @return void
     * @Author: fusu
     * @Description: 物资资料根据id恢复
     * @DateTime:20:49 2023/3/24
     * @params: [productId]
     */
    void bactProduct(Long productId);

    /**
     * @return void
     * @Author: fusu
     * @Description: 物资资料根据id通过
     * @DateTime:21:08 2023/3/24
     * @params: [productId]
     */
    void publishProduct(Long productId);

    /**
     * @return java.util.List<com.goods.common.vo.business.ProductVO>
     * @Author: fusu
     * @Description: 分页获取物资库存信息
     * @DateTime:14:18 2023/3/27
     * @params: [pageNum, pageSize, name, categorys]
     */
    PageVO findAllStocks(Integer pageNum, Integer pageSize, String name, List<Long> categorys);


}
